package Servicio;

import Model.Pedido;
import Model.Cliente;



public class ManejadorPedido extends ManejadorAbstracto {


    public ManejadorPedido () {
    }

    protected String consulta(){
        String aux="";
        switch (opcion){
            case 0: aux ="select * from Pedids where Iniciales_Congreso ='"+valor
                +"' and fecha_congreso='"+valor2+"' order by Numero_Pedido desc";
                break;
            case 1: aux ="select * from Pedids P JOIN Congreso C " +
                    "on (P.Fecha_Congreso=C.Fecha_Inicio) and (P.Iniciales_Congreso = C.Iniciales)" +
                    " where Iniciales_Congreso ='"+valor+
                    "' and fecha_congreso='"+valor2+"'"+
                    " and (P.[PP.Fecha] BETWEEN C.Fecha_Inicio and Fecha_Fin)";
                break;
            case 2: aux ="select * from Pedids P JOIN Congreso C " +
                    "on (P.Fecha_Congreso=C.Fecha_Inicio) and (P.Iniciales_Congreso = C.Iniciales)" +
                    " and (P.[PP.Fecha] NOT BETWEEN C.Fecha_Inicio and Fecha_Fin)"; 
                break;
            case 3: aux ="select * from Pedids where envio =1";
                break;
            case 4: aux ="select * from Pedids where Iniciales_Congreso ='"+valor
                +"' and fecha_congreso='"+valor2+"' order by Numero_Pedido desc limit 1";
        }
        return aux;
    }
    

    protected Object nuevo(){
        Object aux=null;
        
       try {
           String auxfecha=resultSet.getString("PP.Fecha");
           aux = new Pedido(auxfecha, 
                   resultSet.getString("Estado"), resultSet.getInt("descuento"),
                   resultSet.getFloat("Senia"),resultSet.getString("fecha_Envio"),
                   resultSet.getString("Envio"),resultSet.getString("Simb_M"));
           ((Pedido)aux).setNroPedido(resultSet.getInt("Numero_Pedido"));
           ((Pedido)aux).setTotal(resultSet.getInt("Total"));
           String auxid = resultSet.getString("PP.id_cliente");
           ((Pedido)aux).setCliente(Facade.obtenerCliente(auxid));
           ((Pedido)aux).setDVDs(Facade.obtenerDVDs(auxid, auxfecha));
           
           if (opcion==3 || opcion==2) ((Pedido)aux).setCongreso(Proxy.obtenerCongreso(resultSet.getString("Iniciales_Congreso"), resultSet.getString("Fecha_Congreso")));
           
       } catch (Exception e) {e.printStackTrace(); }
       return aux;
    }
    
    protected String table(){
      String retorna="Pedidos(Id_Cliente,Fecha,Id_Estado,Descuento,Senia,Fecha_Envio,Envio,Iniciales_Congreso,Fecha_Congreso,Numero_Pedido,Simb_M)";
      return retorna;
    }
    
    protected String values(Object objeto){
        String aux;
        Pedido pedido=(Pedido)objeto;
        int auxEnvio;
        if (pedido.getEnvio().compareTo("si")==0 || pedido.getEnvio().compareTo("1")==0 )
            auxEnvio=1;
        else 
            auxEnvio=0;
        int auxIdestado = Facade.obtenerIdFijo(pedido.getEstadoo(), 1);
        aux="("+pedido.getCliente().getIdCli()+",'"+
                pedido.getFecha()+"',"+
                auxIdestado+","+
                pedido.getDescuento()+","+
                pedido.getSenia()+",'"+
                pedido.getFechaEnvio()+"',"+
                auxEnvio+",'"+
                pedido.getCongreso().getIniciales()+"','"+
                pedido.getCongreso().getFechaInicio()+"',"+
                valor+",'"+pedido.getSimbM()+"')";
                
        return aux;
    }
    
    protected String table_u(){
        return "Pedidos";
    }
        
    protected String campos_u(Object objeto){
        String aux;
        int auxId = Facade.obtenerIdFijo(((Pedido)objeto).getEstadoo(),1);
        aux = "Id_Estado = " + auxId;
        return aux;
    }
 
    protected String ides_u(Object objeto){
        String aux = "id_cliente="+((Pedido)objeto).getCliente().getIdCli()+
                " and fecha='"+((Pedido)objeto).getFecha()+"'";    
        return aux;
    }
    
    protected String table_d(){
        return "Pedidos";
    }
        
    protected String campos_d(Object objeto){
        return "fecha = '"+valor+"' and Id_Cliente = "+valor2;
    }
}

